﻿/**
 * 获取文字长度（每个半角文字长度为0.75，每个全角文字长度为1.25）。
 * @param text 文字
 * @return 文字长度
 */
function getTextLength(text) {
    // 查找半角文字
    const ansiText = text.match(/[\u0000-\u00ff]/g)

    // 如果没有半角文字，则返回字符串长度的1.25倍
    if (ansiText == null) {
        return text.length * 1.25
    }

    const unicodeCharCount = text.length - ansiText.length
    const ansiCharCount = ansiText.length
    return unicodeCharCount * 1.25 + ansiCharCount * 0.75
}

/**
 * 设置 tooltip。
 * @param parent    tooltip 的父窗口
 * @param text      tooltip 显示的文字
 */
function setTooltip(parent, text) {
    parent.onmouseenter = function() {
        // 获取 tooltip
        const id = parent.id + "_TOOLTIP"
        var tooltip = document.getElementById(id)

        // 如果能取到，则显示
        if (tooltip != null) {
            tooltip.style.display = "block"
            return
        }

        // 如果取不到，则创建
        const className = "tooltip-box"
        const fontSize = 12
        tooltip = document.createElement("div")
        tooltip.id = id
        tooltip.innerHTML = text
        tooltip.style.width = getTextLength(text) * fontSize + "px"
        tooltip.style.position = "absolute"
        tooltip.style.display = "block"
        tooltip.style.lineHeight = 1.6
        tooltip.style.backgroundColor = "#ffffe1"
        tooltip.style.border = "1px solid #666"
        tooltip.style.borderRadius = "5px"
        tooltip.style.fontSize = fontSize + "px"
        tooltip.style.textAlign = "center"
        tooltip.style.left = (parent.offsetLeft + parent.offsetWidth / 4) + "px"
        tooltip.style.top = (parent.offsetTop + parent.offsetHeight) + "px"
        parent.onmouseleave = function() {
            // 当鼠标离开目标时，隐藏 tooltip
            tooltip.style.display = "none"
        } 
        document.body.appendChild(tooltip)
    }
}

/**
 * 显示 toast。
 * @param parent    toast 的父窗口
 * @param text      toast 显示的文字
 */
function toast(parent, text) {
    const fontSize = 12
    const width = getTextLength(text) * fontSize
    const height = 30

    // 创建 toast
    const toast = document.createElement("div")

    // 设置 toast 属性
    toast.innerHTML = text
    toast.style.position = "fixed"
    toast.style.width = width + "px"
    toast.style.height = "30px"
    toast.style.left = parent.offsetLeft + (parent.clientWidth - width) / 2 + "px"
    toast.style.top = parent.offsetTop + (parent.clientHeight - height) / 2 + "px"
    toast.style.lineHeight = "30px"
    toast.style.textAlign = "center"
    toast.style.fontSize = fontSize + "px"
    toast.style.opacity = "0.7"
    toast.style.background = "rgb(200, 200, 200)"
    toast.style.color = "rgb(0, 0, 0)"
    toast.style.borderRadius = "5px"
    toast.style.zIndex = "999999"

    // 将 toast 添加到页面
    document.body.appendChild(toast)
}
